package GUI; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import Model.Operations; import Model.Polynomial; public class MainWindow extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; JFrame f = new JFrame(); private JPanel panel1, panel2, panel3, panel4; private JButton addButt, subButt, divButt, mulButt, operations; private JLabel pOfX, qOfX; private JTextField pol1, pol2, result; private JButton testButton; private JButton derivativeButt, integralButt, evaluateButt, defIntegralButt; private JButton clean; public MainWindow() { f.setTitle("Polynomials"); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); panel4 = new JPanel(); panel1.setLayout(new FlowLayout(FlowLayout.CENTER)); panel2.setLayout(new GridBagLayout()); panel3.setLayout(new BoxLayout(panel3, BoxLayout.PAGE_AXIS)); panel4.setLayout(new FlowLayout(FlowLayout.CENTER)); operations = new JButton("Operations:"); operations.setPreferredSize(new Dimension(100, 50)); panel1.add(operations); addButt = new JButton("+"); addButt.addActionListener(this); addButt.setPreferredSize(new Dimension(50, 50)); addButt.setBackground(Color.cyan); panel1.add(addButt); subButt = new JButton("-"); subButt.addActionListener(this); subButt.setPreferredSize(new Dimension(50, 50)); subButt.setBackground(Color.cyan); panel1.add(subButt); divButt = new JButton("/"); divButt.addActionListener(this); divButt.setPreferredSize(new Dimension(50, 50)); divButt.setBackground(Color.cyan); panel1.add(divButt); mulButt = new JButton("*"); mulButt.addActionListener(this); mulButt.setPreferredSize(new Dimension(50, 50)); mulButt.setBackground(Color.cyan); panel1.add(mulButt); derivativeButt = new JButton("Find derivative"); derivativeButt.setBackground(Color.cyan); derivativeButt.addActionListener(this); integralButt = new JButton("Find indefinite integral"); integralButt.setBackground(Color.cyan); integralButt.addActionListener(this); defIntegralButt = new JButton("Find definite integral"); defIntegralButt.setBackground(Color.cyan); defIntegralButt.addActionListener(this); evaluateButt = new JButton("Evaluate"); evaluateButt.setBackground(Color.cyan); evaluateButt.addActionListener(this); clean = new JButton("Press here to clean"); clean.addActionListener(this); panel4.add(clean); // panel3.add(derivativeButt); // panel3.add(integralButt); // panel3.add(defIntegralButt); // panel3.add(evaluateButt); GridBagConstraints constr = new GridBagConstraints(); constr.gridx = 0; constr.gridy = 0; panel3.add(derivativeButt, constr); constr.gridx = 2; constr.gridy = 0; panel3.add(integralButt, constr); constr.gridx = 0; constr.gridy = 1; panel3.add(defIntegralButt, constr); constr.gridx = 1; constr.gridy = 1; panel3.add(evaluateButt, constr); pOfX = new JLabel(); pOfX.setIcon(new ImageIcon("Images/firstPol.jpg")); qOfX = new JLabel(); qOfX.setIcon(new ImageIcon("Images/secondPol.jpg")); GridBagConstraints c = new GridBagConstraints(); pol1 = new JTextField(" "); pol2 = new JTextField(" "); result = new JTextField(" "); // pol1.addActionListener(this); // pol2.addActionListener(this); testButton = new JButton("The result is:"); c.gridx = 0; c.gridy = 0; panel2.add(pOfX, c); c.gridx = 1; c.gridy = 0; panel2.add(pol1, c); c.gridx = 0; c.gridy = 1; panel2.add(qOfX, c); c.gridx = 1; c.gridy = 1; panel2.add(pol2, c); c.gridx = 0; c.gridy = 3; panel2.add(testButton, c); c.gridx = 1; c.gridy = 3; panel2.add(result, c); validate(); JOptionPane.showMessageDialog(f, "Please enter the coefficients of the polynomials, separated by space! If a degree lower than the maximum is missing, please enter 0 instead! "); f.getContentPane().setLayout(new BorderLayout()); f.add(panel1, BorderLayout.NORTH); f.add(panel2, BorderLayout.CENTER); f.add(panel3, BorderLayout.EAST); f.add(panel4, BorderLayout.SOUTH); f.setVisible(true); f.setSize(600, 400); f.setDefaultCloseOperation(EXIT_ON_CLOSE); f.setLocationRelativeTo(null); } public void actionPerformed(ActionEvent e) { int[] firstPolCoeff, secondPolCoeff; Operations op = new Operations(); firstPolCoeff = getPolynomial(pol1); secondPolCoeff = getPolynomial(pol2); if (e.getSource() == clean) { cleanArea(); } if (e.getSource() == addButt) { Polynomial addResult = op.addPolynomials(new Polynomial(firstPolCoeff), new Polynomial(secondPolCoeff)); int[] addResultCorrect = addResult.reverseCoefficients(addResult.getCoeff()); displayPolynomial(addResultCorrect); } else if (e.getSource() == subButt) { Polynomial subResult = op.subtractPolynomials(new Polynomial(firstPolCoeff), new Polynomial(secondPolCoeff)); int[] subResultCorrect = subResult.reverseCoefficients(subResult.getCoeff()); displayPolynomial(subResultCorrect); } else if (e.getSource() == mulButt) { Polynomial mulResult = op.multiplyPolynomials(new Polynomial(firstPolCoeff), new Polynomial(secondPolCoeff)); int[] mulResultCorrect = mulResult.reverseCoefficients(mulResult.getCoeff()); displayPolynomial(mulResultCorrect); } else if (e.getSource() == derivativeButt) { Polynomial result = op.findDerivative(new Polynomial(firstPolCoeff)); int[] derivativeResult = result.reverseCoefficients(result.getCoeff()); displayPolynomial(derivativeResult); } else if (e.getSource() == evaluateButt) { String number = JOptionPane.showInputDialog(this, "Enter value for evaluation:"); double n = Integer.parseInt(number); double result = op.evaluatePolynomial(new Polynomial(firstPolCoeff), n); JOptionPane.showMessageDialog(f,"The result is: " + result); } } public void displayPolynomial(int[] res) { Polynomial correctPolynomial = new Polynomial(res); result.setText(correctPolynomial.toString()); } public void cleanArea() { pol1.setText(""); pol2.setText(""); result.setText(""); } public int[] getPolynomial(JTextField polyn) { int[] pol = null; try { String text = (polyn.getText()).trim(); String[] splitActionCommand = text.split(" "); pol = new int[splitActionCommand.length]; for (int i = 0; i < splitActionCommand.length; i++) { pol[i] = Integer.parseInt(splitActionCommand[i]); System.out.println(pol[i]); } } catch (NumberFormatException exception) { int messageType = JOptionPane.PLAIN_MESSAGE; JOptionPane.showMessageDialog(null, "Please enter only integers!", "Error!", messageType); } return pol; } }